<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<head>
<meta name="copyright" content="Copyright (c) 2014 IBM Corporation and others. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="STYLESHEET" href="../../book.css" charset="ISO-8859-1" type="text/css">
<title>Incompatibilities between Eclipse 4.3 and 4.4</title>
</head>

<body>

<h1>Incompatibilities between Eclipse 4.3 and 4.4</h1>

<p>
  Eclipse changed in incompatible ways between 4.3 and 4.4 in ways that affect 
  plug-ins. The following entries describe the areas that changed and provide 
  instructions for migrating 4.3 plug-ins to 4.4. Note that you only need to look 
  here if you are experiencing problems running your 4.3 plug-in on 4.4.
</p>
<p>
See also the list of <a href="removals.html">deprecated API removals</a> for this release.
</p>

<ol>
	<li><a href="#workspaceLock">Removed WorkspaceLock API</a></li>
	<li><a href="#incrementalProjectBuilder_getRule">Removed IncrementalProjectBuilder#getRule() API</a></li>
	<li><a href="#eclipse20PluginSupport">Removed built-in support for Eclipse 2.0 Plug-ins</a></li>
	<li><a href="#equinoxFrameworkHooks">Equinox Framework Hook implementations must migrate</a></li>
	<li><a href="#builtinOSGiConsole">Built-in Equinox OSGi console removed</a></li>
</ol>

<hr>

<!-- ############################################## -->

<h2>1. <a name="workspaceLock">Removed WorkspaceLock API</a></h2>
<p><strong>What is affected:</strong> Clients that directly reference WorkspaceLock API.
</p>
<p><strong>Description:</strong>
The <code>WorkspaceLock</code> API allowed a special client (usually platform UI) to
hook into the locking protocols used by the workspace implementation. This hook
was used to mitigate deadlocks due to interaction with synchronous SWT events,
and was never intended to be used by other clients. In the 3.0 release this API
was deprecated in favor of a more general API provided by the <code>org.eclipse.core.jobs</code>
bundle. Invoking this API has had no effect since the 3.0 release. The specific API
being removed includes:
</p>
<ul>
<li>The <code>org.eclipse.core.resources.WorkspaceLock</code> class.</li>
<li>The method <code>org.eclipse.core.resources.IWorkspace#setWorkspaceLock</code></li>
</ul>
<p><strong>Action required:</strong> Clients that directly use API listed above should remove any references to it.
</p>

<!-- ############################################## -->

<h2>2. <a name="incrementalProjectBuilder_getRule">Removed IncrementalProjectBuilder#getRule() API</a></h2>
<p><strong>What is affected:</strong> Clients that directly call or implement IncrementalProjectBuilder#getRule() API.
</p>
<p><strong>Description:</strong>
The <code>IncrementalProjectBuilder#getRule()</code> method returned a scheduling rule 
that was required for building the project by the builder. This method was intended to be used by the builder framework only.
In the 3.6 release this method was deprecated in favor of a more general method <code>IncrementalProjectBuilder#getRule(int, Map)</code>. 
The specific API being removed includes:
</p>
<ul>
<li>The method <code>org.eclipse.core.resources.IncrementalProjectBuilder#getRule()</code></li>
</ul>
<p><strong>Action required:</strong> Clients that directly call API listed above should remove any references to it
or replace with calls to <code>IncrementalProjectBuilder#getRule(int, Map)</code>. Clients that implement API listed
above should implement <code>IncrementalProjectBuilder#getRule(int, Map)</code> instead.
</p>

<!-- ############################################## -->

<h2>3. <a name="eclipse20PluginSupport">Removed built-in support for Eclipse 2.0 Plug-ins</a></h2>
<p><strong>What is affected:</strong> Eclipse 2.0 plug-ins that have not migrated to an OSGi bundle.
</p>
<p><strong>Description:</strong>
The 3.0 release migrated to a runtime based on the OSGi Framework specification.  In order to support 
the migration to OSGi bundles the Equinox OSGi Framework implementation provided support for 
transforming Eclipse 2.0 style plug-ins into real OSGi bundles at runtime.  This support is no longer 
provided by the Equinox Framework implementation.
</p>
<p><strong>Action required:</strong> Eclipse 2.0 plug-ins should be migrated to OSGi bundles.  For cases
where Eclipse 2.0 plug-ins must be supported there is a compatibility fragment that can be installed
(org.eclipse.osgi.compatibility.plugins).  This compatibility fragment must be installed in order
to support the following:
</p>
<ul>
  <li>Run Eclipse 2.0 plug-ins on the 4.4 release</li>
  <li>Use PDE to develop Eclipse 2.0 plug-ins</li>
  <li>Use p2 to publish Eclipse 2.0 plug-ins to a repository </li>
</ul>
<!-- ############################################## -->

<h2>4. <a name="equinoxFrameworkHooks">Equinox Framework Hook implementations must migrate</a></h2>
<p><strong>What is affected:</strong> All Equinox Framework Hook implementations
</p>
<p><strong>Description:</strong>
The Equinox Framework has a number of powerful framework specific hooks which framework fragments may
implement in order to augment the behavior of the framework. These hooks are not considered API since 
they are closely tied to the internal implementation details of the framework. Attempts are made each 
release to support Equinox Framework hook implementations from previous releases.
</p>
<p><strong>Action required:</strong> The 4.4 release has changed much of the internal details of the 
Equinox Framework which required an overhaul of the Equinox implementation specific hooks.  As a result
all existing Equinox Framework hook implementations will need to migrate. In most cases it should be 
possible to migrate existing hook implementations over to the new interfaces. Keep in mind that most of
the internal types representing bundle have changed.
</p>
<!-- ############################################## -->

<h2>5. <a name="builtinOSGiConsole">Built-in Equinox OSGi console removed</a></h2>
<p><strong>What is affected:</strong> Usage of the built-in Equinox OSGi console
</p>
<p><strong>Description:</strong>
Since the 3.0 release the Equinox Framework implementation has provided an OSGi console
implementation. This console is useful for debugging the OSGi environment.  The 4.2 release
disabled the built-in OSGi console included in the Equinox Framework 
(see <a href="../4.2/incompatibilities.html#osgiconsole">4.2 incompatibilities</a>).
The 4.4 release has removed the built-in OSGi console completely from the Equinox Framework
implementation.
</p>
<p><strong>Action required:</strong> In order to use the OSGi console, it is necessary to install
the console bundle itself - org.eclipse.equinox.console and
the three Gogo bundles - org.apache.felix.gogo.runtime,
org.apache.felix.gogo.command, org.apache.felix.gogo.shell.
Documentation for the Equinox console is available at
<a href="../../guide/console_shell.htm"><b>Console Shell</b></a>. The configuration property 
<code>osgi.console.enable.builtin</code> no longer has any effect.
</p>
<!-- ############################################## -->
</body>
</html>
